home *** CD-ROM | disk | FTP | other *** search
- Program LISTER2;
-
- Const
- {$I GEMCONST.PAS }
-
- Type
- {$I GEMTYPE.PAS }
-
- Var
- Trans:Boolean;
- DefPath,FullName:String[255];
- TMarg,BMarg,LMarg,RMarg,PageLen,NChar,NLines:Integer;
- Lst,InFile:Text;
-
- {------------------------------------------------------------------------}
-
- {$I GEMSUBS.PAS }
-
- Procedure Init;
-
- Begin
- TMarg:=2;
- BMarg:=2;
- PageLen:=66;
- NLines:=PageLen-TMarg-BMarg+1;
- LMarg:=4;
- RMarg:=80;
- NChar:=RMarg-LMarg+1;
- DefPath:='A:\*.*';
- FullName:='';
- Trans:=True;
- End;
-
- {------------------------------------------------------------------------}
-
- Procedure Indent(Var C:Integer);
-
- Var
- I:Integer;
-
- Begin
- If(LMarg>1)
- Then For I:=2 to LMarg Do
- Write(Lst,' ');
- C:=LMarg-1
- End;
-
- {------------------------------------------------------------------------}
-
- Procedure Top(Var L:Integer);
-
- Var
- I:Integer;
-
- Begin
- If(TMarg>0)
- Then For I:=1 to TMarg Do
- WriteLn(Lst);
- L:=L+TMarg;
- End;
-
- {------------------------------------------------------------------------}
-
- Procedure Bottom(Var L:Integer);
-
- Var
- I:Integer;
-
- Begin
- If(BMarg>0)
- Then For I:=1 to BMarg Do
- WriteLn(Lst);
- L:=0;
- End;
-
- {------------------------------------------------------------------------}
-
- Function ChTest(Var Ch:Char):Boolean;
-
- Begin
- If Trans
- Then If(Ch>=' ') and (Ch<=Chr(127))
- Then ChTest:=True
- Else ChTest:=False
- Else ChTest:=True
- End;
-
- {------------------------------------------------------------------------}
-
- Procedure FinPage(Var L:Integer);
-
- Begin
- While L<=NLines Do
- Begin
- WriteLn(Lst);
- L:=L+1;
- End;
- Bottom(L);
- End;
-
- {------------------------------------------------------------------------}
-
- Procedure Verbatim;
-
- Var
- Ch:Char;
- C,L:Integer;
-
- Begin
- L:=0;
- Top(L);
- Indent(C);
- While Not EOF(InFile) Do
- Begin
- If(EOLN(InFile)) or (C>=NChar)
- Then Begin
- If(EOLN(InFile)) Then Read(InFile,Ch);
- WriteLn(Lst);
- L:=L+1;
- If(L<=NLines)
- Then Indent(C)
- Else If Not EOF(InFile)
- Then Begin
- Bottom(L);
- Top(L);
- Indent(C);
- End;
- End
- Else Begin
- Read(InFile,Ch);
- If(ChTest(Ch))
- Then Begin
- Write(Lst,Ch);
- C:=C+1;
- End;
- End;
- End;
- FinPage(L);
- End;
-
- {========================================================================}
-
- Begin {Main Program}
- If(Init_Gem>-1)
- Then Begin
- Init_Mouse;
- Set_Mouse(M_Arrow);
- Init;
- Rewrite(Lst,'Lst:');
- While Get_In_File(DefPath,FullName) Do
- Begin
- Reset(InFile,FullName);
- Verbatim;
- Close(InFile);
- Close(Lst);
- End;
- End;
- End.
-